/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.tri.gui.worker.retrievers;

import java.util.ArrayList;
import java.util.List;
import org.tri.persistence.search.Busqueda;

/**
 * La clase {@code MultipleBusquedaDataRetriever} obtiene la data a entregar
 * a partir de multiples {@code Busquedas} que devuelven objetos de una superclase
 * común.
 * @author giaco
 */
public class MultipleBusquedaDataRetriever<K> implements DataRetriever<K> {
    
    /** Arreglo de busquedas a utilizar por el retriever. */
    private Busqueda<? extends K>[] busquedas;

    /**
     * Inicializa el retriever con las busquedas a utilizar.
     * @param busquedas busquedas a utilizar por el retriever.
     */
    public MultipleBusquedaDataRetriever( Busqueda<? extends K>... busquedas ) {
        this.busquedas = busquedas;
        
    }//end constructor

    /**
     * {@inheritDoc}
     */
    @Override
    public List<K> retrieveData() {
        ArrayList<K> resultados = new ArrayList<K>();
        
        for ( Busqueda<? extends K> b : busquedas )
            resultados.addAll( b.listarResultados() );
        
        return resultados;
        
    }//end clase retrieveData
    
}//end clase MultipleBusquedaDataRetriever
